package main

import (
	"fmt"
	"strconv"
)

// 演示golang中string类型转成基本数据类型
func main() {
	var str string = "true"
	var b bool

	// b, _ = strconv.ParseBool(str)
	// 说明
	// 1.strconv.ParseBool(str) 函数会返回两个值（value bool, err error）
	// 2.因为我只想获取到 value bool，不想获取 err 所以我使用_忽略
	b, _ = strconv.ParseBool(str)
	fmt.Printf("b type %T b=%v\n", b, b)

	var str2 string = "1234"
	var n1 int64
	var n2 int
	n1, _ = strconv.ParseInt(str2, 10, 64) // 第三个参数 指定结果必须能无溢出赋值的整数类型
	n2 = int(n1)
	fmt.Printf("n1 = %T, n1 = %v\n", n1, n1)
	// fmt.Printf("n1 = %T, n1 = %q\n", n1, n1)	// %q  不适合数值类型 加引号之后还是string类型  会变成乱码
	fmt.Printf("n2 = %T, n2 = %v\n", n2, n2)

	var str3 string = "123.4567"
	var f1 float64
	f1, _ = strconv.ParseFloat(str3, 64)
	fmt.Printf("f1 = %T, f1 = %v\n", f1, f1)

	// 注意	不能把“hello”转成一个整数，如果这样做，Golang直接将其转成0
	var str4 string = "hello"
	var n3 int64
	n3, _ = strconv.ParseInt(str4, 10, 64)
	fmt.Printf("n3 = %T, n3 = %v\n", n3, n3)
}
